<!DOCTYPE html>
<html class="client-nojs vector-feature-night-mode-disabled vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-sticky-header-enabled" lang="en" dir="ltr"><head>
<meta charset="UTF-8">
<title>SQLJ</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="canonical" href="https://en.wikipedia.org/wiki/SQLJ"> <link href="./mw/ext.cite.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/ext.pygments.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/user.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link rel="stylesheet" type="text/css" href="./mw/site.styles.css">
<link rel="stylesheet" type="text/css" href="./mw/noscript.css">
<link rel="stylesheet" type="text/css" href="./footer.css">
<link rel="stylesheet" type="text/css" href="./vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-SQLJ rootpage-SQLJ skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading">
<span id="openzim-page-title" class="mw-page-title-main"><span class="mw-page-title-main">SQLJ</span></span>
</h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="en" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="en" dir="ltr">
<p><b>SQLJ</b> is a working title for efforts to combine <a href="Java_(programming_language)" title="Java (programming language)">Java</a> and <a href="SQL" title="SQL">SQL</a>. It was a common effort started around 1997 by engineers from <a href="IBM" title="IBM">IBM</a>, <a href="Oracle_Corporation" title="Oracle Corporation">Oracle</a>, <a href="Compaq" title="Compaq">Compaq</a>, <a href="Informix_Corporation" title="Informix Corporation">Informix</a>, <a href="Sybase" title="Sybase">Sybase</a>, <a href="Apache_Derby" title="Apache Derby">Cloudscape</a> and <a href="Sun_Microsystems" title="Sun Microsystems">Sun Microsystems</a>.
</p><p>It consists of the three parts: 0, 1 and 2. Part 0 describes the embedding of SQL statements into Java programs. SQLJ part 0 is the basis for part 10 of the <a href="SQL%3A1999" title="SQL:1999">SQL:1999</a> standard, aka <a href="SQL/OLB" title="SQL/OLB">SQL Object Language Bindings</a> (SQL/OLB).<sup id="cite_ref-Melton2003_1-0" class="reference"><a href="#cite_note-Melton2003-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup> SQLJ parts 1 and 2 describes the converse possibility to use Java classes (routines and types) from SQL statements. Parts 1 and 2 are the basis for part 13 of the SQL standard, <a href="SQL/JRT" title="SQL/JRT">SQL Routines and Types Using the Java Programming Language</a> (SQL/JRT).
</p><p>"SQLJ" is commonly used to refer to just SQLJ part 0, usually when it is contrasted with other means of embedding SQL in Java, like <a href="JDBC" class="mw-redirect" title="JDBC">JDBC</a>.
</p>
<meta property="mw:PageProp/toc">
<div class="mw-heading mw-heading2"><h2 id="ANSI_and_ISO_standards">ANSI and ISO standards</h2></div>
<ul><li>SQLJ part 0: <a href="ANSI" class="mw-redirect" title="ANSI">ANSI</a> X3.135.10-1998, "Database Language SQL—Part 10: Object Language Bindings (SQL/OLB)"</li>
<li>SQLJ part 1: ANSI <a href="NCITS" class="mw-redirect" title="NCITS">NCITS</a> 331.1-1999, "SQLJ—Part 1: SQL Routines Using the Java Programming Language"</li>
<li>SQLJ part 2: ANSI NCITS 331.2-2000, "SQLJ—Part 2: SQL Types Using the Java Programming Language"</li></ul>
<p>Part 0 was updated for JDBC 2.0 compatibility and ratified by ISO in 2000. The last two parts were combined when submitted to ISO. Part 2 was substantially rewritten for the ISO submission because the ANSI version was not formal enough for a specification, being closer to the style of a <a href="User_manual" class="mw-redirect" title="User manual">user manual</a>. The combined version was ratified in 2002.<sup id="cite_ref-Melton2003_1-1" class="reference"><a href="#cite_note-Melton2003-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup>
</p>
<ul><li>ISO/IEC 9075-10:2000, <i>Information technology—Database languages—SQL—Part 10: Object Language Bindings (SQL/OLB)</i></li>
<li>ISO/IEC 9075-13:2002, <i>Information technology—Database languages—SQL—Part 13: SQL Routines and Types Using the Java Programming Language (SQL/JRT)</i>.</li></ul>
<div class="mw-heading mw-heading2"><h2 id="SQLJ_part_0">SQLJ part 0</h2></div>
<p>The SQLJ part 0 specification largely originated from Oracle, who also provided the first reference implementation.<sup id="cite_ref-Melton2003_1-2" class="reference"><a href="#cite_note-Melton2003-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup>
</p><p>In the following SQLJ is a synonym for SQLJ part 0.
</p><p>Whereas <a href="JDBC" class="mw-redirect" title="JDBC">JDBC</a> provides an <a href="Application_programming_interface" class="mw-redirect" title="Application programming interface">API</a>, SQLJ consists of a <a href="Programming_language" title="Programming language">language</a> extension. Thus programs containing SQLJ must be run through a <a href="Preprocessor" title="Preprocessor">preprocessor</a> (the SQLJ translator) before they can be compiled.
</p>
<div class="mw-heading mw-heading3"><h3 id="Advantages">Advantages</h3></div>
<p>Some advantages of SQLJ over JDBC include:
</p>
<ul><li>SQLJ commands tend to be shorter than equivalent JDBC programs.</li>
<li>SQL syntax can be checked at compile time. The returned query results can also be checked strictly.</li>
<li>Preprocessor might generate static SQL which performs better than dynamic SQL because query plan is created on program compile time, stored in database and reused at runtime. Static SQL can guarantee access plan stability. IBM DB2 supports static SQL use in SQLJ programs.</li></ul>
<div class="mw-heading mw-heading3"><h3 id="Disadvantages">Disadvantages</h3></div>
<ul><li>SQLJ requires a preprocessing step.</li>
<li>Many <a href="Integrated_Development_Environment" class="mw-redirect" title="Integrated Development Environment">IDEs</a> do not have SQLJ support.</li>
<li>SQLJ lacks support for most of the common persistence frameworks, such as <a href="Hibernate_(Java)" class="mw-redirect" title="Hibernate (Java)">Hibernate</a>.</li>
<li>Oracle 18c (12.2) has desupported SQLJ in the database.</li></ul>
<div class="mw-heading mw-heading3"><h3 id="Examples">Examples</h3></div>
<p>The following examples compare SQLJ syntax with JDBC usage.
</p>
<table class="wikitable" style="width:100%">
<caption>Multi-row query
</caption>
<tbody><tr>
<th width="50%">JDBC</th>
<th width="50%">SQLJ
</th></tr>
<tr style="vertical-align: top">
<td><div class="mw-highlight mw-highlight-lang-java mw-content-ltr" dir="ltr"><pre><span class="n">PreparedStatement</span><span class="w"> </span><span class="n">stmt</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">conn</span><span class="p">.</span><span class="na">prepareStatement</span><span class="p">(</span>
<span class="w"> </span><span class="s">"SELECT LASTNAME"</span>
<span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s">" , FIRSTNME"</span>
<span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s">" , SALARY"</span>
<span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s">" FROM DSN8710.EMP"</span>
<span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s">" WHERE SALARY BETWEEN ? AND ?"</span><span class="p">);</span>
<span class="n">stmt</span><span class="p">.</span><span class="na">setBigDecimal</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="n">min</span><span class="p">);</span>
<span class="n">stmt</span><span class="p">.</span><span class="na">setBigDecimal</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="n">max</span><span class="p">);</span>
<span class="n">ResultSet</span><span class="w"> </span><span class="n">rs</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">stmt</span><span class="p">.</span><span class="na">executeQuery</span><span class="p">();</span>
<span class="k">while</span><span class="w"> </span><span class="p">(</span><span class="n">rs</span><span class="p">.</span><span class="na">next</span><span class="p">())</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">lastname</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">rs</span><span class="p">.</span><span class="na">getString</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
<span class="w"> </span><span class="n">firstname</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">rs</span><span class="p">.</span><span class="na">getString</span><span class="p">(</span><span class="mi">2</span><span class="p">);</span>
<span class="w"> </span><span class="n">salary</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">rs</span><span class="p">.</span><span class="na">getBigDecimal</span><span class="p">(</span><span class="mi">3</span><span class="p">);</span>
<span class="w"> </span><span class="c1">// Print row...</span>
<span class="p">}</span>
<span class="n">rs</span><span class="p">.</span><span class="na">close</span><span class="p">();</span>
<span class="n">stmt</span><span class="p">.</span><span class="na">close</span><span class="p">();</span>
</pre></div>
</td>
<td><div class="mw-highlight mw-highlight-lang-sql mw-content-ltr" dir="ltr"><pre><span class="o">#</span><span class="k">sql</span><span class="w"> </span><span class="n">private</span><span class="w"> </span><span class="k">static</span><span class="w"> </span><span class="n">iterator</span><span class="w"> </span><span class="n">EmployeeIterator</span><span class="p">(</span><span class="n">String</span><span class="p">,</span><span class="w"> </span><span class="n">String</span><span class="p">,</span><span class="w"> </span><span class="n">BigDecimal</span><span class="p">);</span>
<span class="p">...</span>
<span class="n">EmployeeIterator</span><span class="w"> </span><span class="n">iter</span><span class="p">;</span>
<span class="o">#</span><span class="k">sql</span><span class="w"> </span><span class="p">[</span><span class="n">ctx</span><span class="p">]</span><span class="w"> </span><span class="n">iter</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="err">{</span>
<span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="n">LASTNAME</span>
<span class="w"> </span><span class="p">,</span><span class="w"> </span><span class="n">FIRSTNME</span>
<span class="w"> </span><span class="p">,</span><span class="w"> </span><span class="n">SALARY</span>
<span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">DSN8710</span><span class="p">.</span><span class="n">EMP</span>
<span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">SALARY</span><span class="w"> </span><span class="k">BETWEEN</span><span class="w"> </span><span class="p">:</span><span class="k">min</span><span class="w"> </span><span class="k">AND</span><span class="w"> </span><span class="p">:</span><span class="k">max</span>
<span class="err">}</span><span class="p">;</span>
<span class="k">do</span><span class="w"> </span><span class="err">{</span>
<span class="w"> </span><span class="o">#</span><span class="k">sql</span><span class="w"> </span><span class="err">{</span>
<span class="w"> </span><span class="k">FETCH</span><span class="w"> </span><span class="p">:</span><span class="n">iter</span>
<span class="w"> </span><span class="k">INTO</span><span class="w"> </span><span class="p">:</span><span class="n">lastname</span><span class="p">,</span><span class="w"> </span><span class="p">:</span><span class="n">firstname</span><span class="p">,</span><span class="w"> </span><span class="p">:</span><span class="n">salary</span>
<span class="w"> </span><span class="err">}</span><span class="p">;</span>
<span class="w"> </span><span class="o">//</span><span class="w"> </span><span class="n">Print</span><span class="w"> </span><span class="k">row</span><span class="p">...</span>
<span class="err">}</span><span class="w"> </span><span class="n">while</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">iter</span><span class="p">.</span><span class="n">endFetch</span><span class="p">());</span>
<span class="n">iter</span><span class="p">.</span><span class="k">close</span><span class="p">();</span>
</pre></div>
</td></tr></tbody></table>
<table class="wikitable" style="width:100%">
<caption>Single-row query
</caption>
<tbody><tr>
<th width="50%">JDBC</th>
<th width="50%">SQLJ
</th></tr>
<tr style="vertical-align:top">
<td><div class="mw-highlight mw-highlight-lang-java mw-content-ltr" dir="ltr"><pre><span class="n">PreparedStatement</span><span class="w"> </span><span class="n">stmt</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">conn</span><span class="p">.</span><span class="na">prepareStatement</span><span class="p">(</span>
<span class="w"> </span><span class="s">"SELECT MAX(SALARY), AVG(SALARY)"</span>
<span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s">" FROM DSN8710.EMP"</span><span class="p">);</span>
<span class="n">rs</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">stmt</span><span class="p">.</span><span class="na">executeQuery</span><span class="p">();</span>
<span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">rs</span><span class="p">.</span><span class="na">next</span><span class="p">())</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="c1">// Error—no rows found</span>
<span class="p">}</span>
<span class="n">maxSalary</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">rs</span><span class="p">.</span><span class="na">getBigDecimal</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
<span class="n">avgSalary</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">rs</span><span class="p">.</span><span class="na">getBigDecimal</span><span class="p">(</span><span class="mi">2</span><span class="p">);</span>
<span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">rs</span><span class="p">.</span><span class="na">next</span><span class="p">())</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="c1">// Error—more than one row found</span>
<span class="p">}</span>
<span class="n">rs</span><span class="p">.</span><span class="na">close</span><span class="p">();</span>
<span class="n">stmt</span><span class="p">.</span><span class="na">close</span><span class="p">();</span>
</pre></div>
</td>
<td><div class="mw-highlight mw-highlight-lang-sql mw-content-ltr" dir="ltr"><pre><span class="o">#</span><span class="k">sql</span><span class="w"> </span><span class="p">[</span><span class="n">ctx</span><span class="p">]</span><span class="w"> </span><span class="err">{</span>
<span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="k">MAX</span><span class="p">(</span><span class="n">SALARY</span><span class="p">),</span><span class="w"> </span><span class="k">AVG</span><span class="p">(</span><span class="n">SALARY</span><span class="p">)</span>
<span class="w"> </span><span class="k">INTO</span><span class="w"> </span><span class="p">:</span><span class="n">maxSalary</span><span class="p">,</span><span class="w"> </span><span class="p">:</span><span class="n">avgSalary</span>
<span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">DSN8710</span><span class="p">.</span><span class="n">EMP</span>
<span class="err">}</span><span class="p">;</span>
</pre></div>
</td></tr></tbody></table>
<table class="wikitable" style="width:100%">
<caption>INSERT
</caption>
<tbody><tr>
<th width="50%">JDBC</th>
<th width="50%">SQLJ
</th></tr>
<tr style="vertical-align:top">
<td><div class="mw-highlight mw-highlight-lang-java mw-content-ltr" dir="ltr"><pre><span class="n">stmt</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">conn</span><span class="p">.</span><span class="na">prepareStatement</span><span class="p">(</span>
<span class="w"> </span><span class="s">"INSERT INTO DSN8710.EMP "</span><span class="w"> </span><span class="o">+</span>
<span class="w"> </span><span class="s">"(EMPNO, FIRSTNME, MIDINIT, LASTNAME, HIREDATE, SALARY) "</span>
<span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s">"VALUES (?, ?, ?, ?, CURRENT DATE, ?)"</span><span class="p">);</span>
<span class="n">stmt</span><span class="p">.</span><span class="na">setString</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="n">empno</span><span class="p">);</span>
<span class="n">stmt</span><span class="p">.</span><span class="na">setString</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="n">firstname</span><span class="p">);</span>
<span class="n">stmt</span><span class="p">.</span><span class="na">setString</span><span class="p">(</span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="n">midinit</span><span class="p">);</span>
<span class="n">stmt</span><span class="p">.</span><span class="na">setString</span><span class="p">(</span><span class="mi">4</span><span class="p">,</span><span class="w"> </span><span class="n">lastname</span><span class="p">);</span>
<span class="n">stmt</span><span class="p">.</span><span class="na">setBigDecimal</span><span class="p">(</span><span class="mi">5</span><span class="p">,</span><span class="w"> </span><span class="n">salary</span><span class="p">);</span>
<span class="n">stmt</span><span class="p">.</span><span class="na">executeUpdate</span><span class="p">();</span>
<span class="n">stmt</span><span class="p">.</span><span class="na">close</span><span class="p">();</span>
</pre></div>
</td>
<td><div class="mw-highlight mw-highlight-lang-sql mw-content-ltr" dir="ltr"><pre><span class="o">#</span><span class="k">sql</span><span class="w"> </span><span class="p">[</span><span class="n">ctx</span><span class="p">]</span><span class="w"> </span><span class="err">{</span>
<span class="w"> </span><span class="k">INSERT</span><span class="w"> </span><span class="k">INTO</span><span class="w"> </span><span class="n">DSN8710</span><span class="p">.</span><span class="n">EMP</span>
<span class="w"> </span><span class="p">(</span><span class="n">EMPNO</span><span class="p">,</span><span class="w"> </span><span class="n">FIRSTNME</span><span class="p">,</span><span class="w"> </span><span class="n">MIDINIT</span><span class="p">,</span><span class="w"> </span><span class="n">LASTNAME</span><span class="p">,</span><span class="w"> </span><span class="n">HIREDATE</span><span class="p">,</span><span class="w"> </span><span class="n">SALARY</span><span class="p">)</span>
<span class="w"> </span><span class="k">VALUES</span>
<span class="w"> </span><span class="p">(:</span><span class="n">empno</span><span class="p">,</span><span class="w"> </span><span class="p">:</span><span class="n">firstname</span><span class="p">,</span><span class="w"> </span><span class="p">:</span><span class="n">midinit</span><span class="p">,</span><span class="w"> </span><span class="p">:</span><span class="n">lastname</span><span class="p">,</span><span class="w"> </span><span class="k">CURRENT</span><span class="w"> </span><span class="nb">DATE</span><span class="p">,</span><span class="w"> </span><span class="p">:</span><span class="n">salary</span><span class="p">)</span>
<span class="err">}</span><span class="p">;</span>
</pre></div>
</td></tr></tbody></table>
<div class="mw-heading mw-heading2"><h2 id="See_also">See also</h2></div>
<ul><li><a href="Embedded_SQL" title="Embedded SQL">Embedded SQL</a></li>
<li><a href="Language_Integrated_Query" title="Language Integrated Query">Language Integrated Query</a> (LINQ)</li></ul>
<div class="mw-heading mw-heading2"><h2 id="References">References</h2></div>
<style data-mw-deduplicate="TemplateStyles:r1239543626">
/* start https://en.wikipedia.org/ */
.mw-parser-output .reflist{margin-bottom:0.5em;list-style-type:decimal}@media screen{.mw-parser-output .reflist{font-size:90%}}.mw-parser-output .reflist .references{font-size:100%;margin-bottom:0;list-style-type:inherit}.mw-parser-output .reflist-columns-2{column-width:30em}.mw-parser-output .reflist-columns-3{column-width:25em}.mw-parser-output .reflist-columns{margin-top:0.3em}.mw-parser-output .reflist-columns ol{margin-top:0}.mw-parser-output .reflist-columns li{page-break-inside:avoid;break-inside:avoid-column}.mw-parser-output .reflist-upper-alpha{list-style-type:upper-alpha}.mw-parser-output .reflist-upper-roman{list-style-type:upper-roman}.mw-parser-output .reflist-lower-alpha{list-style-type:lower-alpha}.mw-parser-output .reflist-lower-greek{list-style-type:lower-greek}.mw-parser-output .reflist-lower-roman{list-style-type:lower-roman}
/* end https://en.wikipedia.org/ */
</style><div class="reflist">
<div class="mw-references-wrap"><ol class="references">
<li id="cite_note-Melton2003-1"><span class="mw-cite-backlink">^ <a href="#cite_ref-Melton2003_1-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-Melton2003_1-1"><sup><i><b>b</b></i></sup></a> <a href="#cite_ref-Melton2003_1-2"><sup><i><b>c</b></i></sup></a></span> <span class="reference-text"><style data-mw-deduplicate="TemplateStyles:r1238218222">
/* start https://en.wikipedia.org/ */
.mw-parser-output cite.citation{font-style:inherit;word-wrap:break-word}.mw-parser-output .citation q{quotes:"\"""\"""'""'"}.mw-parser-output .citation:target{background-color:rgba(0,127,255,0.133)}.mw-parser-output .id-lock-free.id-lock-free a{background:url("./mw/Lock-green.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-limited.id-lock-limited a,.mw-parser-output .id-lock-registration.id-lock-registration a{background:url("./mw/Lock-gray-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-subscription.id-lock-subscription a{background:url("./mw/Lock-red-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .cs1-ws-icon a{background:url("./mw/Wikisource-logo.svg")right 0.1em center/12px no-repeat}body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-free a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-limited a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-registration a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-subscription a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .cs1-ws-icon a{background-size:contain;padding:0 1em 0 0}.mw-parser-output .cs1-code{color:inherit;background:inherit;border:none;padding:inherit}.mw-parser-output .cs1-hidden-error{display:none;color:var(--color-error,#d33)}.mw-parser-output .cs1-visible-error{color:var(--color-error,#d33)}.mw-parser-output .cs1-maint{display:none;color:#085;margin-left:0.3em}.mw-parser-output .cs1-kern-left{padding-left:0.2em}.mw-parser-output .cs1-kern-right{padding-right:0.2em}.mw-parser-output .citation .mw-selflink{font-weight:inherit}@media screen{.mw-parser-output .cs1-format{font-size:95%}html.skin-theme-clientpref-night .mw-parser-output .cs1-maint{color:#18911f}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .cs1-maint{color:#18911f}}
/* end https://en.wikipedia.org/ */
</style><cite id="CITEREFJim_Melton2003" class="citation book cs1">Jim Melton (2003). <span class="id-lock-limited" title="Free access subject to limited trial, subscription normally required"><a rel="nofollow" class="external text" href="https://archive.org/details/advancedsqlunder00melt_845"><i>Advanced SQL: 1999</i></a></span>. Morgan Kaufmann. pp. <a rel="nofollow" class="external text" href="https://archive.org/details/advancedsqlunder00melt_845/page/n357">352</a>-364. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>978-1-55860-677-7</bdi>.</cite></span>
</li>
</ol></div></div>
<div class="mw-heading mw-heading2"><h2 id="Further_reading">Further reading</h2></div>
<ul><li>Connie Tsui, <a rel="nofollow" class="external text" href="http://www.ibm.com/developerworks/data/library/techarticle/0302tsui/0302tsui.html">Considering SQLJ for Your DB2 V8 Java Applications</a>, IBM developerworks, 13 Feb 2003</li>
<li>Owen Cline, <a rel="nofollow" class="external text" href="http://www.ibm.com/developerworks/data/library/techarticle/dm-0412cline/">Develop your applications using SQLJ</a>, IBM developerworks, 16 Dec 2004</li>
<li><cite id="CITEREFJason_Price2001" class="citation book cs1">Jason Price (2001). <span class="id-lock-registration" title="Free registration required"><a rel="nofollow" class="external text" href="https://archive.org/details/javaprogrammingw00jaso"><i>Java Programming With Oracle SQLJ</i></a></span>. O'Reilly Media. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>978-0-596-00087-5</bdi>.</cite></li></ul>
<div class="mw-heading mw-heading2"><h2 id="External_links">External links</h2></div>
<ul><li><a rel="nofollow" class="external text" href="http://www.redbooks.ibm.com/abstracts/sg246435.html">IBM Redbook: DB2 for z/OS and OS/390: Ready for Java</a></li>
<li><a rel="nofollow" class="external text" href="https://docs.oracle.com/en/database/oracle/oracle-database/18/jsqlj/sqlj-developers-guide.pdf">Oracle SQLJ Developers Guide</a></li></ul></div><!--htdig_noindex--><div><div class="zim-footer">
This article is issued from <a class="external text" title="Last edited on 2024-09-07" href="https://en.wikipedia.org/wiki/?title=SQLJ&oldid=1244434470">Wikipedia</a>. The text is available under <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.en">Creative Commons Attribution-Share Alike 4.0</a> unless otherwise noted. Additional terms may apply for the media files.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>
</body></html>